深入理解Java虚拟机(四): 虚拟机性能监控
点击上方"淼淼之森",选择"关注"公众号
优秀文章,第一时间收到!
Knowledge Sharing
知识分享
现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文有用,希望你能将它分享,让更多的人看到。
推荐阅读
1、神站推荐
2、资源汇总整理分享
虚拟机性能监控
JDK命令行工具
jps(JVM Proccess Status Tool)
显示指定系统内所有HotSpot虚拟机进程
参数
-q 只输出LVMID(Local Virtual Machine Identifier),省略主类名
-m 输出虚拟机进程启动时传递给主类main()函数的参数
-l 输出全路径名,如果是jar则输出jar的全路径
-v 输出虚拟机进程启动时JVM参数
jstat(JVM Statistics Monitoring Tool)
收集HotSpot虚拟机各方面的运行数据
命令格式:
jstat [option vmid [interval[s|ms] [count]]
option:用户想要查询的虚拟机信息
-class 监视类装载、卸载数量、总空间及类装载耗时
-gc 监控Java堆状况,包括eden、survivor、老年代、永久代等容量、已用空间、GC时间合计等信息
-gccapacity 与-gc差不多,但输出主要关注Java堆各个区域使用到的最大、最小空间
-gcutil 与-gc差不多,但输出主要关注已使用空间占总空间的百分比
-gccause 与-gcutil一样,但是会多输出导致上次GC的原因
-gcnew 监视新生代GC状况
-gcnewcapacity 与-gcnew差不多,但输出主要关注使用到的最大、最小空间
-gcold 监视老年代GC装快
-gcoldcapacity 与-gcold差不多,但输出主要关注使用到的最大、最小空间
-gcpermcapacity 输出永久代使用到的最大、最小空间
-compiler 输出JIT编译过的方法、耗时等信息
-printcompilation 输出已经被JIT编译的方法
VMID和LVMID的区别:如果是本地则两个一样;如果是远程虚拟机,则VMID为:
[protocol:][//lvmid[@hostname[:port]/servername]
例:假如每250ms查询一次进程2764的垃圾收集情况,一共查询20次,命令为:
jstat -gc 2764 250 20
jinfo(Configuration Info for Java)
显示虚拟机配置信息
格式
jinfo [option] pid
jmap(Memory Map for Java)
生成虚拟机的内存存储快照(heapdump文件)
命令格式
jmap [option] pid
option参数
-dump 生成Java堆转储快照,格式为:-dump:[live,]format=b,file=
,其中live子参数说明是否只dump出存活的对象-finalizerinfo 显示在F-Queue中等待Finalizer线程执行finalize方法,只在linux/Solaris平台下有效
-heap 显示Java堆详细信息,只在linux/Solaris平台下有效
-histo 显示堆中对象统计信息, 包括类、实例数量、合计容量
-permstat 以ClassLoader为统计口径显示永久代内存状态。只在linux/Solaris平台下有效
-F 当虚拟机进程对-dump选项没有响应时,可以使用这个强制生成。只在linux/Solaris平台下有效
jhat(JVM Heap Dump Browser)
用于分析heapdump文件,它会建立一个HTTP/HTML服务器,让用户可以再浏览器上查看分析结果(耗时长,不推荐使用)
jstack(Stack Trace for Java)
显示虚拟机线程快照
命令格式
jstack [option] vmid
option 参数:
-F 当正常输出的请求不被响应时,强制输出线程堆栈
-l 除堆栈外,显示关于锁的附加信息
-m 如果调用到本地方法,可显示C/C++的堆栈
HSDIS:JIT生成代码反汇编
JDK可视化工具
==>>>JDK内置监控神器
-END-
关注公众号"淼淼之森";后台回复序号“4”获取超多精彩哦。